/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Vacunacion.java
 *
 * Created on 07/10/2010, 16:50:08
 */

package presentacion.vacuna;

import hibernate.objeto.Vacuna;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import logica.CapaLogica;
import logica.PeriodoAplicacionVacunaLogica;
import logica.VacunaLogica;
import logica.validacion.CapaValidacion;
import presentacion.CapaPresentacion;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.Icono;
import presentacion.utilidad.maquetado.InformeError;
import presentacion.utilidad.MensajePresentacion;

/**
 *
 * @author Gonzalo
 */
public class VacunaPresentacion extends javax.swing.JDialog {

    /** Creates new form Vacunacion */
    public VacunaPresentacion(java.awt.Frame parent, boolean modal, Vacuna unaVacuna) {
        super(parent, modal);

        vacuna = unaVacuna;
        cancelado = true;

        initComponents();
        personalizarGUI();
        setLocationRelativeTo(null);
        setearEventosQueCapturanTeclaEnterYEscape();
    }

    /**
     * Setea datos de la ventana.
     *
     */
    private void personalizarGUI() {
        if (CapaPresentacion.modoCarga) {
            modoCarga();
        } else if (CapaPresentacion.modoModificacion) {
            modoModificacion();
        } else if (CapaPresentacion.modoVisualizacion) {
            modoVisualizacion();
        }
    }

    /**
     * Setea la ventana en modo carga.
     *
     */
    private void modoCarga() {
        vacuna = new Vacuna();
        this.setTitle("Agregar vacuna");
    }

    /**
     * Setea la ventana en modo modificación.
     *
     */
    private void modoModificacion() {
        exhibirDatosEnPantalla();
            this.setTitle("Modificar vacuna");
    }

    /**
     * Setea la ventana en modo visualización.
     *
     */
    private void modoVisualizacion() {
        setearEstadoCampos(false);
        botonCancelar.requestFocus();
        CapaPresentacion.personalizarBotonesEnVisualizacion(
                textoDescriptivoVentana, botonAceptar, botonCancelar);
    }
    
    /**
     * Pone en false la propiedad enabled de todos los campos de ingreso.
     *
     * @param estado El estado a setear
     */
    private void setearEstadoCampos(boolean estado) {
        nombreVacuna.setEnabled(estado);
        recienNacido.setEnabled(estado);
        dosMeses.setEnabled(estado);
        cuatroMeses.setEnabled(estado);
        seisMeses.setEnabled(estado);
        doceMeses.setEnabled(estado);
        dieciochoMeses.setEnabled(estado);
        seisAnios.setEnabled(estado);
        onceAnios.setEnabled(estado);
        quinceAnios.setEnabled(estado);
        dieciseisAnios.setEnabled(estado);
        cadaDiezAnios.setEnabled(estado);
        puerperioOPostAbortoInmediato.setEnabled(estado);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoDescriptivoVentana = new javax.swing.JLabel();
        panelInformacionVacuna = new javax.swing.JPanel();
        textoNombreVacuna = new javax.swing.JLabel();
        nombreVacuna = new javax.swing.JTextField();
        puerperioOPostAbortoInmediato = new javax.swing.JCheckBox();
        cadaDiezAnios = new javax.swing.JCheckBox();
        quinceAnios = new javax.swing.JCheckBox();
        seisAnios = new javax.swing.JCheckBox();
        doceMeses = new javax.swing.JCheckBox();
        cuatroMeses = new javax.swing.JCheckBox();
        recienNacido = new javax.swing.JCheckBox();
        dosMeses = new javax.swing.JCheckBox();
        seisMeses = new javax.swing.JCheckBox();
        dieciochoMeses = new javax.swing.JCheckBox();
        onceAnios = new javax.swing.JCheckBox();
        dieciseisAnios = new javax.swing.JCheckBox();
        textoDescriptivoPeriodo = new javax.swing.JLabel();
        botonAceptar = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(396, 339));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        textoDescriptivoVentana.setFont(Fuente.FUENTE_TITULO_2);
        textoDescriptivoVentana.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVentana.setText("Ingrese los datos de la vacuna");
        textoDescriptivoVentana.setPreferredSize(new java.awt.Dimension(200, 20));

        panelInformacionVacuna.setMinimumSize(new java.awt.Dimension(360, 261));
        panelInformacionVacuna.setPreferredSize(new java.awt.Dimension(360, 221));

        textoNombreVacuna.setFont(Fuente.FUENTE_LABEL);
        textoNombreVacuna.setForeground(Fuente.COLOR_NORMAL);
        textoNombreVacuna.setText("Nombre");

        nombreVacuna.setFont(Fuente.FUENTE_TEXTFIELD);
        nombreVacuna.setForeground(Fuente.COLOR_NORMAL);
        nombreVacuna.setPreferredSize(new java.awt.Dimension(300, 20));

        puerperioOPostAbortoInmediato.setFont(Fuente.FUENTE_CHECKBOX);
        puerperioOPostAbortoInmediato.setForeground(Fuente.COLOR_NORMAL);
        puerperioOPostAbortoInmediato.setText("Puerperio o post-aborto inmediato");
        puerperioOPostAbortoInmediato.setPreferredSize(new java.awt.Dimension(190, 20));

        cadaDiezAnios.setFont(Fuente.FUENTE_CHECKBOX);
        cadaDiezAnios.setForeground(Fuente.COLOR_NORMAL);
        cadaDiezAnios.setText("Cada diez años");
        cadaDiezAnios.setPreferredSize(new java.awt.Dimension(115, 20));

        quinceAnios.setFont(Fuente.FUENTE_CHECKBOX);
        quinceAnios.setForeground(Fuente.COLOR_NORMAL);
        quinceAnios.setText("Quince años");
        quinceAnios.setPreferredSize(new java.awt.Dimension(115, 20));

        seisAnios.setFont(Fuente.FUENTE_CHECKBOX);
        seisAnios.setForeground(Fuente.COLOR_NORMAL);
        seisAnios.setText("Seis años");
        seisAnios.setPreferredSize(new java.awt.Dimension(115, 20));

        doceMeses.setFont(Fuente.FUENTE_CHECKBOX);
        doceMeses.setForeground(Fuente.COLOR_NORMAL);
        doceMeses.setText("Doce meses");
        doceMeses.setPreferredSize(new java.awt.Dimension(115, 20));

        cuatroMeses.setFont(Fuente.FUENTE_CHECKBOX);
        cuatroMeses.setForeground(Fuente.COLOR_NORMAL);
        cuatroMeses.setText("Cuatro meses");
        cuatroMeses.setPreferredSize(new java.awt.Dimension(115, 20));

        recienNacido.setFont(Fuente.FUENTE_CHECKBOX);
        recienNacido.setForeground(Fuente.COLOR_NORMAL);
        recienNacido.setText("Recién nacido");
        recienNacido.setPreferredSize(new java.awt.Dimension(115, 20));

        dosMeses.setFont(Fuente.FUENTE_CHECKBOX);
        dosMeses.setForeground(Fuente.COLOR_NORMAL);
        dosMeses.setText("Dos meses");
        dosMeses.setPreferredSize(new java.awt.Dimension(190, 20));

        seisMeses.setFont(Fuente.FUENTE_CHECKBOX);
        seisMeses.setForeground(Fuente.COLOR_NORMAL);
        seisMeses.setText("Seis meses");
        seisMeses.setPreferredSize(new java.awt.Dimension(190, 20));

        dieciochoMeses.setFont(Fuente.FUENTE_CHECKBOX);
        dieciochoMeses.setForeground(Fuente.COLOR_NORMAL);
        dieciochoMeses.setText("Dieciocho meses");
        dieciochoMeses.setPreferredSize(new java.awt.Dimension(190, 20));

        onceAnios.setFont(Fuente.FUENTE_CHECKBOX);
        onceAnios.setForeground(Fuente.COLOR_NORMAL);
        onceAnios.setText("Once años");
        onceAnios.setPreferredSize(new java.awt.Dimension(190, 20));

        dieciseisAnios.setFont(Fuente.FUENTE_CHECKBOX);
        dieciseisAnios.setForeground(Fuente.COLOR_NORMAL);
        dieciseisAnios.setText("Dieciseis años");
        dieciseisAnios.setPreferredSize(new java.awt.Dimension(190, 20));

        textoDescriptivoPeriodo.setFont(Fuente.FUENTE_LABEL);
        textoDescriptivoPeriodo.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoPeriodo.setText("Seleccione los períodos de aplicación");
        textoDescriptivoPeriodo.setPreferredSize(new java.awt.Dimension(200, 20));

        javax.swing.GroupLayout panelInformacionVacunaLayout = new javax.swing.GroupLayout(panelInformacionVacuna);
        panelInformacionVacuna.setLayout(panelInformacionVacunaLayout);
        panelInformacionVacunaLayout.setHorizontalGroup(
            panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(textoDescriptivoPeriodo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                        .addComponent(textoNombreVacuna)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(nombreVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(cuatroMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(seisMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(recienNacido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(dosMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(doceMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(dieciochoMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(seisAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(onceAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(quinceAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(dieciseisAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                                .addComponent(cadaDiezAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(puerperioOPostAbortoInmediato, javax.swing.GroupLayout.PREFERRED_SIZE, 208, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addGap(25, 25, 25))
        );
        panelInformacionVacunaLayout.setVerticalGroup(
            panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelInformacionVacunaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(textoNombreVacuna)
                    .addComponent(nombreVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(textoDescriptivoPeriodo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(recienNacido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(dosMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cuatroMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(seisMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(doceMeses, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(dieciochoMeses, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(seisAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(onceAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(quinceAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(dieciseisAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(panelInformacionVacunaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cadaDiezAnios, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(puerperioOPostAbortoInmediato, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        botonAceptar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonAceptar.setForeground(Fuente.COLOR_NORMAL);
        botonAceptar.setIcon(Icono.ICONO_16_ACEPTAR);
        botonAceptar.setText("Aceptar");
        botonAceptar.setToolTipText("Agrega la vacuna");
        botonAceptar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonCancelar.setFont(Fuente.FUENTE_BOTON_EXTERNO);
        botonCancelar.setForeground(Fuente.COLOR_NORMAL);
        botonCancelar.setIcon(Icono.ICONO_16_CANCELAR);
        botonCancelar.setText("Cancelar");
        botonCancelar.setToolTipText("Cancela la operación");
        botonCancelar.setPreferredSize(new java.awt.Dimension(110, 23));
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(160, Short.MAX_VALUE)
                .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(panelInformacionVacuna, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(186, 186, 186))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textoDescriptivoVentana, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelInformacionVacuna, javax.swing.GroupLayout.PREFERRED_SIZE, 221, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        agregarOModificarVacuna();
}//GEN-LAST:event_botonAceptarActionPerformed

    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        setVacuna(null);
        this.dispose();
}//GEN-LAST:event_botonCancelarActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        //Para salida con cruz
        setVacuna(null);
    }//GEN-LAST:event_formWindowClosing
    /**
     * En caso de que se trate de la modificación de una vacuna, se cargan
     * los datos de la misma en los distintos campos de la pantalla.
     *
     */
    private void exhibirDatosEnPantalla() {
        nombreVacuna.setText(
                vacuna.getNombreVacuna());
        nombreVacuna.setCaretPosition(0);

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "recién nacido")) {
            recienNacido.setSelected(true);
        } else {
            recienNacido.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "dos meses")) {
            dosMeses.setSelected(true);
        } else {
            dosMeses.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "cuatro meses")) {
            cuatroMeses.setSelected(true);
        } else {
            cuatroMeses.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "seis meses")) {
            seisMeses.setSelected(true);
        } else {
            seisMeses.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "doce meses")) {
            doceMeses.setSelected(true);
        } else {
            doceMeses.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "dieciocho meses")) {
            dieciochoMeses.setSelected(true);
        } else {
            dieciochoMeses.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "seis años")) {
            seisAnios.setSelected(true);
        } else {
            seisAnios.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "once años")) {
            onceAnios.setSelected(true);
        } else {
            onceAnios.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "quince años")) {
            quinceAnios.setSelected(true);
        } else {
            quinceAnios.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "dieciseis años")) {
            dieciseisAnios.setSelected(true);
        } else {
            dieciseisAnios.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(), "cada diez años")) {
            cadaDiezAnios.setSelected(true);
        } else {
            cadaDiezAnios.setSelected(false);
        }

        if (PeriodoAplicacionVacunaLogica.esPeriodoDePublicacion(
                vacuna.getNombreVacuna(),
                "puerperio o post-aborto inmediato")) {
            puerperioOPostAbortoInmediato.setSelected(true);
        } else {
            puerperioOPostAbortoInmediato.setSelected(false);
        }
    }

     /**
     * Verifica que el nombre de la vacuna sea único
     * @return true si es único false en caso contrario
     */
    private boolean esVacunaUnica() {
        //En caso de modificación, se verifica si no se cambió el nombre
        if (vacuna.getNombreVacuna() != null &&
                vacuna.getNombreVacuna().equalsIgnoreCase(
                nombreVacuna.getText())) {
            return true;
        } else if (nombreVacuna.getText().isEmpty()){
            return true;
        } else {
            return (VacunaLogica.getVacunaPorNombreYPorEnBd(
                    nombreVacuna.getText(), 1)
                     == null);
        }
    }

    /**
     * Valida los campos ingresados
     *
     * @return true si los campos estan listos para cargarse, false en caso
     * contrario
     */
    private boolean validarCamposVacuna() {
        boolean nombreVacunaRetorno = true;

        //Manejo de la validación de nombre
        if (!CapaValidacion.validarCampoObligatorio(
                nombreVacuna.getText())) {
            textoNombreVacuna.setForeground(
                    Fuente.COLOR_ERROR);
            textoNombreVacuna.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_NOMBRE);
            nombreVacunaRetorno = false;
        } else {
            textoNombreVacuna.setForeground(Fuente.COLOR_NORMAL);
            textoNombreVacuna.setToolTipText(null);

        }

        if (!recienNacido.isSelected() && !dosMeses.isSelected()
                  && !cuatroMeses.isSelected()
                  && !seisMeses.isSelected()
                  && !doceMeses.isSelected()
                  && !dieciochoMeses.isSelected()
                  && !seisAnios.isSelected()
                  && !onceAnios.isSelected()
                  && !quinceAnios.isSelected()
                  && !dieciseisAnios.isSelected()
                  && !cadaDiezAnios.isSelected()
                  && !dieciseisAnios.isSelected()
                  && !quinceAnios.isSelected()
                  && !puerperioOPostAbortoInmediato.isSelected()) {
            textoDescriptivoPeriodo.setForeground(
                    Fuente.COLOR_ERROR);
            textoDescriptivoPeriodo.setToolTipText(InformeError.
                    INFORME_ERROR_USO_COMUN_PERIODO_APLICACION);
            nombreVacunaRetorno = false;
        } else {
            textoDescriptivoPeriodo.setForeground(
                    Fuente.COLOR_NORMAL);
            textoDescriptivoPeriodo.setToolTipText(null);
        }
        
    return nombreVacunaRetorno;
    }

    /**
     * Recopila los datos de la vacuna a agregar/modificar.
     *
     */
    private void recopilarInformacion() {
        datosVacuna = new Object[13];

        datosVacuna[CapaLogica.VACUNA_NOMBRE] =
                nombreVacuna.getText();

        datosVacuna[CapaLogica.VACUNA_RECIEN_NACIDO] =
                recienNacido.isSelected();

        datosVacuna[CapaLogica.VACUNA_DOS_MESES] =
                dosMeses.isSelected();

        datosVacuna[CapaLogica.VACUNA_CUATRO_MESES] =
                cuatroMeses.isSelected();

        datosVacuna[CapaLogica.VACUNA_SEIS_MESES] =
                seisMeses.isSelected();

        datosVacuna[CapaLogica.VACUNA_DOCE_MESES] =
                doceMeses.isSelected();

        datosVacuna[CapaLogica.VACUNA_DIECIOCHO_MESES] =
                dieciochoMeses.isSelected();

        datosVacuna[CapaLogica.VACUNA_SEIS_ANIOS] =
                seisAnios.isSelected();

        datosVacuna[CapaLogica.VACUNA_ONCE_ANIOS] =
                onceAnios.isSelected();

        datosVacuna[CapaLogica.VACUNA_QUINCE_ANIOS] =
                quinceAnios.isSelected();

        datosVacuna[CapaLogica.VACUNA_DIECISEIS_ANIOS] =
                dieciseisAnios.isSelected();

        datosVacuna[CapaLogica.VACUNA_CADA_DIEZ_ANIOS] =
                cadaDiezAnios.isSelected();

        datosVacuna[CapaLogica.VACUNA_PUERPERIO_O_POST_ABORTO_INMEDIATO] =
                puerperioOPostAbortoInmediato.isSelected();
    }

    /**
     * Agrega o modifica la vacuna.
     */
    private void agregarOModificarVacuna() {
        //Si la vacuna no existe en la bd
        if (esVacunaUnica()) {
            //Valida los campos
            if (validarCamposVacuna()) {
                //Confirmar modificación
                if (CapaPresentacion.confirmarModificacion("vacuna", "la")) {
                    //Carga toda la información de la pantalla
                    recopilarInformacion();
                    if ((VacunaLogica.agregarOModificarVacuna(
                            datosVacuna, vacuna))) {
                        cancelado = false;
                        this.dispose();
                    }
                }
            }
        } else {
            MensajePresentacion.errorDuplicidadObjeto("La vacuna");
        }
    }
    
    /**
     * Retorna la vacuna que se agregó.
     * @return El objeto vacuna en cuestión
     */
    static public Vacuna getVacuna() {
        return vacuna;
    }

    static public void setVacuna(Vacuna unaVacuna) {
        if (cancelado) {
            vacuna = unaVacuna;
        }
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEnter = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    agregarOModificarVacuna();
                }
            }
        };
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    //Llamada al método que capturará el boton enter y
                    //trabajará sobre el mismo
                    setVacuna(null);
                    dispose();
                }
            }
        };
        //Setear eventos
        nombreVacuna.addKeyListener(
                keyListenerEnter);
        nombreVacuna.addKeyListener(
                keyListenerEscape);

        recienNacido.addKeyListener(keyListenerEnter);
        recienNacido.addKeyListener(keyListenerEscape);
        dosMeses.addKeyListener(keyListenerEnter);
        dosMeses.addKeyListener(keyListenerEscape);
        cuatroMeses.addKeyListener(keyListenerEnter);
        cuatroMeses.addKeyListener(keyListenerEscape);
        seisMeses.addKeyListener(keyListenerEnter);
        seisMeses.addKeyListener(keyListenerEscape);
        doceMeses.addKeyListener(keyListenerEnter);
        doceMeses.addKeyListener(keyListenerEscape);
        dieciochoMeses.addKeyListener(keyListenerEnter);
        dieciochoMeses.addKeyListener(keyListenerEscape);
        seisAnios.addKeyListener(keyListenerEnter);
        seisAnios.addKeyListener(keyListenerEscape);
        onceAnios.addKeyListener(keyListenerEnter);
        onceAnios.addKeyListener(keyListenerEscape);
        quinceAnios.addKeyListener(keyListenerEnter);
        quinceAnios.addKeyListener(keyListenerEscape);
        dieciseisAnios.addKeyListener(keyListenerEnter);
        dieciseisAnios.addKeyListener(keyListenerEscape);
        cadaDiezAnios.addKeyListener(keyListenerEnter);
        cadaDiezAnios.addKeyListener(keyListenerEscape);
        puerperioOPostAbortoInmediato.addKeyListener(
                keyListenerEnter);
        puerperioOPostAbortoInmediato.addKeyListener(
                keyListenerEscape);

        botonAceptar.addKeyListener(keyListenerEscape);
        botonCancelar.addKeyListener(keyListenerEscape);

    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JCheckBox cadaDiezAnios;
    private javax.swing.JCheckBox cuatroMeses;
    private javax.swing.JCheckBox dieciochoMeses;
    private javax.swing.JCheckBox dieciseisAnios;
    private javax.swing.JCheckBox doceMeses;
    private javax.swing.JCheckBox dosMeses;
    private javax.swing.JTextField nombreVacuna;
    private javax.swing.JCheckBox onceAnios;
    private javax.swing.JPanel panelInformacionVacuna;
    private javax.swing.JCheckBox puerperioOPostAbortoInmediato;
    private javax.swing.JCheckBox quinceAnios;
    private javax.swing.JCheckBox recienNacido;
    private javax.swing.JCheckBox seisAnios;
    private javax.swing.JCheckBox seisMeses;
    private javax.swing.JLabel textoDescriptivoPeriodo;
    private javax.swing.JLabel textoDescriptivoVentana;
    private javax.swing.JLabel textoNombreVacuna;
    // End of variables declaration//GEN-END:variables
    static public Vacuna vacuna;
    private Object[] datosVacuna;
    private static boolean cancelado;
}
